package com.hb.trade.server.project.notice.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hb.core.pojo.parent.MPBaseController;
import com.hb.core.pojo.parent.PageResult;
import com.hb.core.pojo.project.notice.dto.TenderInviteEnterpriseDTO;
import com.hb.core.pojo.project.notice.entity.TenderInviteEnterprise;
import com.hb.trade.server.project.notice.service.TenderInviteEnterpriseService;
import org.fzzn.core.model.enums.MsgEnum;
import org.fzzn.core.model.msg.Message;
import org.fzzn.core.util.MsgUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 邀请书操作类
 *
 * @author tian
 * @date 2022年02月19日 16:28
 */
@RestController
public class TenderInviteEnterpriseController extends MPBaseController<TenderInviteEnterprise, TenderInviteEnterpriseService> {

    public TenderInviteEnterpriseController(TenderInviteEnterpriseService service) {
        super(service);
    }


    /**
     * 投标人查询邀请书列表
     *
     * @param tenderInviteEnterpriseDTO
     * @return org.fzzn.core.model.msg.Message<com.hb.core.pojo.parent.PageResult < com.hb.core.pojo.project.notice.dto.TenderInviteEnterpriseDTO>>
     * @author tian
     * @date 2022-2-19 16:34
     */
    @PostMapping("/tenderInviteEnterprise/findTenderInviteEnterpriseList")
    public Message<PageResult<TenderInviteEnterpriseDTO>> findNoticeList(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO) {
        Page<TenderInviteEnterpriseDTO> tenderInviteEnterprisePage = service.pageTenderInviteEnterpriseDTOByOrgId(tenderInviteEnterpriseDTO);
        return MsgUtil.success(PageResult.get(tenderInviteEnterprisePage));
    }


    /**
     * 根据id查询邀请书详情
     *
     * @param tenderInviteEnterpriseDTO
     * @return org.fzzn.core.model.msg.Message<com.hb.core.pojo.project.notice.dto.TenderInviteEnterpriseDTO>
     * @author tian
     * @date 2022-2-19 17:11
     */
    @PostMapping("/tenderInviteEnterprise/findTenderInviteEnterpriseInfoById")
    public Message<TenderInviteEnterpriseDTO> findTenderInviteEnterpriseInfoById(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO) {
        Long inviteEnterpriseId = tenderInviteEnterpriseDTO.getId();
        if (inviteEnterpriseId == null) {
            return MsgUtil.msg(MsgEnum.INCORRECT_PARAM);
        }

        tenderInviteEnterpriseDTO = service.findTenderInviteEnterpriseInfoById(inviteEnterpriseId);
        return MsgUtil.success(tenderInviteEnterpriseDTO);
    }


    /**
     * 投标人确认回执
     *
     * @param tenderInviteEnterpriseDTO
     * @return org.fzzn.core.model.msg.Message<com.hb.core.pojo.project.notice.dto.TenderInviteEnterpriseDTO>
     * @author tian
     * @date 2022-2-19 17:38
     */
    @PostMapping("/tenderInviteEnterprise/confirmationReceipt")
    public Message<Boolean> confirmationReceipt(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO) {
        return service.confirmationReceipt(tenderInviteEnterpriseDTO);
    }


    /**
     * 代理机构查询每个标段下投标人邀请信息
     * @author tian
     * @date 2022-2-21 11:54
     * @param tenderInviteEnterpriseDTO
     * @return org.fzzn.core.model.msg.Message<java.lang.Boolean>
     */
    @PostMapping("/tenderInviteEnterprise/findInviteEnterpriseListByProjectId")
    public Message<PageResult<TenderInviteEnterpriseDTO>> findInviteEnterpriseListByProjectId(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO) {
        Page<TenderInviteEnterpriseDTO> inviteEnterprisePage = service.findInviteEnterpriseListByProjectId(tenderInviteEnterpriseDTO);
        return MsgUtil.success(PageResult.get(inviteEnterprisePage));
    }


    /**
     * 查询每个标段下投标人邀请信息
     *
     * @author yuezheng
     * @param tenderInviteEnterpriseDTO
     * @return List<TenderInviteEnterprise>
     * @date 2022/4/18 2:11 PM
     */
    @PostMapping("/tenderInviteEnterprise/findInviteEnterpriseListByNoticeId")
    public Message<List<TenderInviteEnterprise>> findInviteEnterpriseListByNoticeId(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO) {
        QueryWrapper<TenderInviteEnterprise> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda()
                .select(TenderInviteEnterprise::getId, TenderInviteEnterprise::getNoticeId, TenderInviteEnterprise::getOrgId, TenderInviteEnterprise::getSectionId)
                .eq(TenderInviteEnterprise::getNoticeId, tenderInviteEnterpriseDTO.getNoticeId());
        List<TenderInviteEnterprise> list = service.list(queryWrapper);
        return MsgUtil.success(list);
    }


    /**
     * 代理机构根据标段id查询当前标段下投标人邀请信息
     *
     * @param tenderInviteEnterpriseDTO
     * @return org.fzzn.core.model.msg.Message<com.hb.core.pojo.project.notice.dto.TenderInviteEnterpriseDTO>
     * @author tian
     * @date 2022-2-19 17:11
     */
    @PostMapping("/tenderInviteEnterprise/findInviteEnterpriseInfoBySectionId")
    public Message<TenderInviteEnterpriseDTO> findInviteEnterpriseInfoBySectionId(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO) {
        Long sectionId = tenderInviteEnterpriseDTO.getSectionId();
        if (sectionId == null) {
            return MsgUtil.msg(MsgEnum.INCORRECT_PARAM);
        }

        tenderInviteEnterpriseDTO = service.findInviteEnterpriseInfoBySectionId(sectionId);
        return MsgUtil.success(tenderInviteEnterpriseDTO);
    }
    /**
     * @param tenderInviteEnterpriseDTO:
     * @Description:根据id查询邀请的详情
     * @Author: zhongdl
     * @Date:2022/5/11 16:03

     * @return: {@link org.fzzn.core.model.msg.Message<com.hb.core.pojo.project.notice.dto.TenderInviteEnterpriseDTO> }
     **/
    @PostMapping("/tenderInviteEnterprise/findInviteEnterpriseInfoById")
    public Message<TenderInviteEnterpriseDTO> findInviteEnterpriseInfoById(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO){
        Long id = tenderInviteEnterpriseDTO.getId();
        if (id == null) {
            return MsgUtil.msg(MsgEnum.INCORRECT_PARAM);
        }

        TenderInviteEnterprise tenderInviteEnterprise = service.getById(id);
        if (tenderInviteEnterprise == null){
            return MsgUtil.success(tenderInviteEnterpriseDTO);
        }
        return MsgUtil.success(tenderInviteEnterprise.to(TenderInviteEnterpriseDTO.class));
    }


    /**
     * 代理机构查询标段下投标人的邀请状态
     * @author tian
     * @date 2022-2-21 11:54
     * @param tenderInviteEnterpriseDTO
     * @return org.fzzn.core.model.msg.Message<java.lang.Boolean>
     */
    @PostMapping("/tenderInviteEnterprise/findInviteEnterprisePageBySectionId")
    public Message<PageResult<TenderInviteEnterpriseDTO>> findInviteEnterprisePageBySectionId(@RequestBody TenderInviteEnterpriseDTO tenderInviteEnterpriseDTO) {
        Page<TenderInviteEnterpriseDTO> inviteEnterprisePage = service.findInviteEnterprisePageBySectionId(tenderInviteEnterpriseDTO);
        return MsgUtil.success(PageResult.get(inviteEnterprisePage));
    }


    /**
     * 根据标段集合查询接受邀请的企业信息
     *
     * @author yuezheng
     * @param
     * @return org.fzzn.core.model.msg.Message
     * @date 2022/4/23 9:38 AM
     */
    @PostMapping("/tenderInviteEnterprise/findInviteEnterpriseByAcceptSectionList")
    public Message< List<TenderInviteEnterprise>> findInviteEnterpriseByAcceptSectionList(@RequestBody List<Long> sectionList) {
        List<TenderInviteEnterprise> result = service.findInviteEnterpriseByAcceptSectionList(sectionList);
        return MsgUtil.success(result);
    }


}
